package com.ys.web.service;

import java.util.List;

import com.ys.web.entity.Company;
import com.ys.web.pojo.BaiduPromoteInfo;
import com.ys.web.pojo.CompanyInfo;
import com.ys.web.pojo.VisitAccessKeywordDay;
import com.ys.web.remotemodel.AdOfflineCompanyInfo;

/**
 * 代运营公司-Service-接口
 * @author wdj
 *
 */
public interface CompanyService {
 	
	/**
	 * 删除从公司实体
	 * @param id
	 */
	public void deleteCompany(Integer id) throws Exception;
 	
 	/**
 	 * 新增客户公司资料
 	 * @param entity
 	 * @return 返回添加的id
 	 */
 	public Integer addCompanyInfo(CompanyInfo companyInfo) throws Exception;
 	
 	
 	/**
 	 * 更新或保存客户公司信息
 	 * @param companyInfo
 	 */
 	public Integer saveCompanyInfo(CompanyInfo companyInfo)throws Exception;
 	
 	/**
 	 * 通过公司id获取公司信息
 	 * @param id
 	 * @return
 	 */
	public CompanyInfo getCompanyById(Integer id) throws Exception; 	
	
	


	public List<CompanyInfo> getCompanyBySemUserId(Integer id,int page) throws Exception;	 

	
	/**
	 * 获取所有客户
	 * @param page 页面
	 *
	 * @return
	 */
	public List<CompanyInfo> getAllPageCompany(int page) throws Exception;
	
	/**
	 * 获取所有客户
	 * @return
	 * @throws Exception
	 */
	public List<CompanyInfo> getAllCompanyInfo() throws Exception;
	
	/**
	 * 公司是否存在百度数据
	 * @return
	 * @throws Exception
	 */
	public Boolean isCompanyHasBaidu(Integer companyId) throws Exception;
	
	
	/**
	 * 判断公司名是否重复
	 * @param companyname
	 * @return
	 * @throws Exception
	 */
	public Boolean isCompanyNameExist(String companyname) throws Exception;
	
	/**
	 * 根据公司名查找公司
	 * @param companyname
	 * @return
	 * @throws Exception
	 */
	public Company getCompanyByCompanyName(String companyname) throws Exception;
	
	/**
	 * 根据行业查找公司(只显示有百度数据查看的公司)
	 * @param industryId 行业id
	 * @param page 当前页码
	 * @return 公司列表
	 */
	public List<CompanyInfo> getCompanyByIndustry(Integer industryId, int page);
	
	/**
	 * 查看该行业的所有公司
	 * @param industryId
	 * @return
	 */
	public List<CompanyInfo> getCompanyByIndustry(Integer industryId);
	
	/**
	 * 获取没同步过的公司
	 * @return
	 */
	public List<CompanyInfo> getCompanyNotIsSynchronized();
	
	/**
	 * 获取公司实体对象
	 * @param id
	 * @return
	 */
	public Company getCompanyEntityById(Integer id);
	
	/**
	 * 保存公司实体对象
	 * @param company
	 */
	public void saveCompany(Company company);
	
	/**
	 * 获取sem要 管理的公司-远程调用
	 * @param userIdKAD sem用户id
	 * @return
	 */
	public List<CompanyInfo> getRemoteCompanyBySemUserId(Integer userIdKAD,int page);
	
	/**
	 * 更新公司信息-远程调用
	 * @param companyInfo
	 */
	public void updateCompanyInfo(CompanyInfo companyInfo);
	
	/**
	 * 根据行业查找公司(只显示有百度数据查看的公司)-远程调用
	 * @param industryId 行业id
	 * @return 公司列表
	 */
	public List<CompanyInfo> getCompanyByIndustry_ws(String industryId);
	
	
	public List<VisitAccessKeywordDay> getUserIdByIndustryId(String industryId,String startTime,String endTime);
	/**
	 * 获取广告到期的公司信息-远程调用
	 * @return 广告到期的公司信息
	 */
	@Deprecated
	public List<AdOfflineCompanyInfo> getAdOfflineCompanyInfo_ws(Integer userIdKAD, int page);
	
	/**
	 * 获取sem要 管理的百度推广公司-远程调用
	 * @param userIdKAD sem用户id
	 * @return
	 */
	public List<CompanyInfo> getRemoteCompanyBySemUserId_baidu(Integer userIdKAD,int page);
	
	/**
	 * 根据行业查找关键词(百度数据)
	 * @param industryId
	 * @return  关键词信息
	 */
	public List<BaiduPromoteInfo> getKeyInfoByIndustryBd(String industryId,String startTime,String endTime);
	
	public List<VisitAccessKeywordDay> getYsbKeywordByIndustryId(String industryId,String startTime,String endTime);
	public void downloadBackup(Integer id) throws Exception;

	public void deleteCompanyBackup(Integer companyId);

	public void signCompanyBackup(Integer id);
	public void cancelCompanyBackup(Integer id);
	
	public void deleteCompanyAllBackup(Integer companyId);
	
	public List<CompanyInfo> getCompanyByIndustry(String industryId);

}
